1. Field
Computing device input/output (I/O) controllers.
2. Background
An I/O controller is the hardware that directs the flow of data between a chipset and at least one I/O bus of a computing device. Generally, data sent from the chipset to the I/O controller is temporarily stored in buffers contained within the I/O controller until an I/O bus connected to the I/O controller has space available to send the data to other places within the computing device. Computing devices operate at less than optimum efficiency since they often do not fully maximize the potential of their I/O controllers.
Some inefficiency occurs when the chipset sends data to the I/O controller but buffers within the I/O controller assigned to receive the data do not have sufficient space to accommodate the additional data they are assigned to store. In other situations, there may be sufficient collective space in the buffers, but too much data may be assigned to any one buffer and, since there is little control over where the data is going to be assigned for storage between the buffers, that particular buffer is incapable of storing the additional data being sent to it.
In each of these situations, the I/O controller sends a “retry” (e.g., all or part of the data sent is flushed from the pipeline established between the chipset and the I/O controller, requiring the chipset to send the flushed data again) to the chipset if any the buffers are incapable of temporarily storing the data assigned to them. This decreases efficiency for two reasons: 1.) the same data is sent to the I/O controller multiple times, and 2.) the additional traffic on a bus connecting the chipset and the I/O controller often requires more bandwidth than the bus can efficiently handle.